%%
% 实验一（1）
numG = [0.3 1];
denG = [1 0.5 0];
G = tf(numG, denG);

numH = [1];
denH = [1 0.8 1];
H = tf(numH, denH);

figure;
subplot(2,1,1);
step(feedback(G, 1));
title('开环系统的阶跃响应');

subplot(2,1,2);
step(H);
title('忽略零的闭环系统的阶跃响应');


%%
% 实验一（2）
numG = 4;
denG = [1 1 0];
G = tf(numG, denG);

H = feedback(G, 1, -1);

figure;
step(H);
title('闭环系统的阶跃响应');

info = stepinfo(H);

disp('Dynamic Performance Indices:');
disp(['Rise Time: ', num2str(info.RiseTime)]);
disp(['Settling Time: ', num2str(info.SettlingTime)]);
disp(['Overshoot: ', num2str(info.Overshoot)]);
disp(['Peak: ', num2str(info.Peak)]);
disp(['Peak Time: ', num2str(info.PeakTime)]);

%%
%实验一（3）
% G(s) = 5 / ((0.1s + 1)(0.5s + 1))
numG = 5;
denG = conv([0.1 1], [0.5 1]);
G = tf(numG, denG);

H = feedback(G, 1);

figure;
step(H);
title('闭环系统的阶跃响应');

stepInfo = stepinfo(H);
steadyStateValue = stepInfo.SettlingMin; 
steadyStateError = abs(1 - steadyStateValue);

disp('Steady-State Error:');
disp(steadyStateError);


%%
% 实验二（1）
% G(s) = K / (s(s+1)(s+5))
numG = K;
denG = conv([1 0], conv([1 1], [1 5]));
G = tf(numG, denG);

figure;
rlocus(G);
title('系统的根轨迹');

%%
% 实验二（2）
% G(s) = (K(s+3)) / (s(s+1)(s+2))
numG = [K 3*K]; % 分子
denG = conv([1 0], conv([1 1], [1 2])); % 分母
G = tf(numG, denG);

figure;
rlocus(G);
title('Root Locus of the System');

% 判断系统的稳定性
% 检查根轨迹是否在左半平面
poles = pole(G);
isStable = all(real(poles) < 0);

if isStable
    disp('The system is stable.');
else
    disp('The system is unstable.');
end

%%
% 实验二（3）（1）
% G(s) = K / (s(s+4)(s^2+4s+20))
numG = K; % 分子
denG = conv([1 0], conv([1 4], [1 4 20])); % 分母
G = tf(numG, denG);

closedLoopSystem = feedback(G, 1);

figure;
rlocus(closedLoopSystem);
title('闭环系统根轨迹图');

%%
% 实验二（3）（2）
% G(s) = (K(s+2)) / (s^2+4s+9)^2
numG = [K 2*K]; % 分子
denG = conv([1 4 9], [1 4 9]); % 分母
G = tf(numG, denG);

closedLoopSystem = feedback(G, 1);

figure;
rlocus(closedLoopSystem);
title('闭环系统根轨迹图');

%% 
% 实验二（3）（3）
% G(s) = K / (s^2(s+2)(s+5)) H(s)=1
numG = K; % 分子
denG = conv([1 0 0], conv([1 2], [1 5])); % 分母
G = tf(numG, denG);
H1 = 1;
H2 = tf([2 1], 1);

figure;
subplot(121)
rlocus(G*H1);
title('系统根轨迹图(1)');

subplot(122)
rlocus(G*H2);
title('系统根轨迹图(2)');


